查看原文
其他

每天学习一点R:8.数据的导入和输出

红皇后学术 红皇后学术 2022-06-07

数据的导入

在应用R进行数据分析之前,首先要做的一步工作就是将数据导入R工作环境。

R所识别的数据通常为“X·Y”型的多变量数据,格式为txt或csv格式,不同数据间以制表符(Tab)或“,”间隔

输入数据可以使用excel进行录入和基本格式的修改,之后另存为,选择制表符分隔的文本(.txt)或CSV UTF-8(逗号分隔)(.csv)


R中最常使用read.table()read.csv()命令对数据进行导入。

read.table

read.table(file, header = FALSE, sep = "", quote = ""'",dec = ".", row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1,skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#",allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(),fileEncoding = "", encoding = "unknown")

参数解读:

  • file,导入文件的名称,要用绝对路径

  • header,逻辑参数,指定是否文件第一行定义为列名;

  • sep:

    指定数据分割字符,制表符为”\t”,逗号为”,”

  • na.strings:指定缺失文字

  • skip:指定读数据跳过的行数

  • nrows:指定数据读入最大的行数

  • dec:

    指定小数点记号

  • row.names与col.names,赋予数据行名和列名

  • colClasses,数据中每列的类型

  • comment.char 注释字符,即忽略携带此字符的行

  • stringsAsFactors字符变量是否变为因子

导入的文件与运行的R脚本位于同一文件夹中,则无需输入绝对路径,只需输入文件名即可。

通常数据的第一行为列名,第一列为行名,此时可以将参数设置为“header = TRUE, row.names = 1”

data <- read.table(file = "tem.txt", header = TRUE, row.names = 1, sep = "\t"

其余参数一般默认即可。

read.csv

read.table()命令可以解决绝大多数数据导入的问题,但是在个别情况下,会导致数据导入失败或格式错乱,本人之前曾经遇到过,发生次数极少,原因未知,此时可以试试read.csv()命令。

read.csv()命令的使用方法和参与基本上与read.table()一致

data <- read.csv(file = "tem.txt", header = TRUE, row.names = 1, sep = "\t", as.is = TRUE)

read.csv()命令导入数据时会自动的将非数值类型的数据是为因子(factor),但有时我们可能就是需要字符形式的数据,此时只需把as.is参数设置为TRUE即可。

报错解决

在做数据分析时,经常会碰到一些元素是以0开头的数字,在使用函数read.table或者read.csv等读取文件时,会自动的将开头的0去掉

可以通过设定read.table或者read.csv的参数colClasses=”character”来解决这一问题。

在导入数据时,会出现这样的错误:scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,:15行没有5元素

这是由于在提示的位置,数据的格式不规则导致无法识别,可以手动进行修改或者设定read.table的参数fill=TRUE来解决。

数据的导出

在进行一系列数据整理或统计学分析之后,可能需要导出结果数据,此时需要用到write.table()命令。

write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol = "\n", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, qmethod = c("escape", "double"))

参数解读:

  • x为需要写入的文件,一般为一个数据框;

  • file为输入文件的路径和名字;

  • append如为FALSE,则任何同名的文件均会被替换;

  • quote规定输出的文件中的数字或字符是否被双引号括在内;

  • sep规定每一行中不同的值之间的间隔符;

  • eol规定在每一行最后的字符,“\n”代表换行

  • na规定代表缺失数据的字符;

  • dec规定小数点的表示符号;

  • row.names和col.names规定输出的文件中是否包含行名或列名;

  • qmethod规定如何处置双引号字符,默认为escape,此时忽略双引号,当设置为double时,则把双引号当做字符输出。

#将data导出为result.txt文件write.table(data, file = "result.txt", sep = "\t", quote = FALSE)

扩展阅读




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存